/**
 * 用户角色关联表模型定义
 *
 * 该模块定义了用户表的结构和属性，使用Sequelize库进行数据库操作。
 * 用户表包含了一系列用户相关信息，如身份标识、联系方式、个人信息等。
 *
 */
const { DataTypes } = require("sequelize");

const requelize = require("../db/sequelize");

const User = require("./user.model");

const Role = require("./role.model.js");

/**
 * 定义用户角色关联表模型类
 *
 * 该类代表了数据库中的用户表，包括表的结构和各种属性的定义。
 * 使用Sequelize的define方法来创建模型。
 */
const UserRole = requelize.define(
  "db_user_role",
  {
    id: {
      type: DataTypes.UUID,
      defaultValue: DataTypes.UUIDV4,
      unique: true,
      primaryKey: true,
      comment: "ID",
    },
  },
  {
    tableName: "db_user_role",
    comment: "用户角色关联表",
  }
);

UserRole.belongsTo(User, {
  foreignKey: "user_id",
  targetKey: "id",
  as: "userInfo",
  comment: "关联用户表的 ID",
});
UserRole.belongsTo(Role, {
  foreignKey: "role_id",
  targetKey: "id",
  as: "roleInfo",
  comment: "关联角色表的 ID",
});

// 注释掉的代码块：这里原本是一个同步数据库表结构的调用，使用时需要解除注释并谨慎操作，因为它会强制同步表结构，可能导致数据丢失
// UserRole.sync({ force: true });

// 导出用户模型，供其他模块使用
module.exports = UserRole;
